約 4,130,208 件
https://w.atwiki.jp/wiki7_ahr/pages/37.html
EclipseでSQL開発始動 EclipseでSQL開発始動 準備ができたら データベースにテーブルを追加 準備ができたら Eclipse/SQL-1ではEclipseを使ったデータベース開発方法として、DTP の 導入について記述してきました。そして、DBMSとしてMySQLを採用、新たにデータベースを作成し、接続用のユーザー名と パスワードも追加してEclipse側も設定、無事接続成功までこぎつけたのでした。 今、「Data Source Explorer」にはアイテム「Databases」配下に追加した接続名アイテムが表示されているはずです。 接続名アイテムのツリーを開くと接続名配下には色々と子アイテムがぶらさがっている事が判ります。 新たに追加されたコネクション配下にはこんなアイテムがあります。 ここからは以下の手順でデータベースの中身を作ってみましょう。 テーブルの新規作成 テーブル内のフィールドの定義を追加 テーブルにデータを追加 データベースにテーブルを追加 さて、接続「mysqltest_dbconnect」は今「mysqltest_database」に接続しています。 ツリーを開くと「Schemas」アイテムが出てきて、さらにその下に「mysqltest_database」、そして 「Tables」というアイテムが表示されます。今、ここには何も定義されていません。これからここに 新しいテーブルを追加してデータベースとしての実体を作っていきましょう。 アイテム「Tables」上で右クリックして「New Table」を選択すると、新規テーブル作成画面が表示されます。 色々とチェックボックスがあり、オプションの設定が出来ますが、ここではデフォルトのままで 次に進む事にします。 「Next」ボタンをクリックすると、テーブル名とカラム設定画面が表示されます。 カラムは最低ひとつは定義しないとテーブル生成時にエラーになります。 ここでは「Add Column」ボタンをクリックしてデフォルト名のカラムを追加します。 new_column_0という名称でカラムが追加されます。次にカラムの属性を設定します。 「Datatype」にINTEGER UNSIGNED、Nullableにチェックを入れて「Default Value」を0にしましょう。 次に、もう一回「Add Column」ボタンをクリックしてみましょう。 new_column_1という名称でカラムが追加されるはずです。 これも属性の設定をします。「Data Type」をTEXT、Nullableにチェックを入れて 「Default Value」を"NONE"にしておきます。 この後、「Next」クリックにより、プライマリーキーの選択画面が表示されます。 ここで「Finish」をクリックすると、エディタ画面にSQLが生成されます。 このままでは何も進展しません。ここで、エディタペイン上で右クリックしてポップアップを呼出し、 「Execute All」を選択すると、今表示しているSQLを実行してその効果があらわれます。 こうしてテーブルを生成すると、Eclipseにはテーブルが生成されたというメッセージが 表示されます。 ここまできたら、再び「Data Source Explorer」に戻って右クリック、「Refresh」を選択すると、 表示が更新され、さきほどの「Table」配下に今Createしたテーブルの情報が色々と追加されている事が判ります。
https://w.atwiki.jp/m_shige1979/pages/560.html
管理 ユーザー データベース テーブル ビュー ファンクション プロシージャー
https://w.atwiki.jp/warband/pages/244.html
pt_none|none pt_rescued_prisoners|Rescued Prisoners pt_enemy|Enemy pt_hero_party|Hero Party pt_village_defenders|Village Defenders pt_cattle_herd|Cattle Herd pt_looters|Outlaw Band pt_militia|Militia Patrol pt_steppe_bandits|D'Shar Raiders pt_forest_bandits|Forest Bandits pt_mountain_bandits|Mountain Men Outlaws pt_sea_raiders|Vanskerry Raiders pt_snake_bandits|Snake Cult Party pt_forest_outcasts|Band of Brigands pt_sea_raider_army|Vanskerry Sea Raider Army pt_omen_seekers|Omen Seekers pt_heretics|Heretic Coven pt_heretics_army|Heretic Army pt_snake_cult|Snake Cult Party pt_snake_cult_warband|Snake Cult Warband pt_snake_cult_army|Snake Cult Army pt_azi_death_cult|Azi Dahaka Death Cult Marauders pt_mystmountain_raiders|Mystmountain Raiders pt_mystmountain_army|Mystmountain Army pt_jatu_nomads|Jatu Raiding Party pt_jatu_warband|Jatu Warband pt_jatu_army|Jatu Army pt_red_brotherhood|Red Brotherhood pt_inquisition_patrol|Inquisition Patrol pt_inquisition_warband|Inquisition Theologians pt_inquisition_army|Inquisition Holy Army pt_fadventurers|Female Adventuring Company pt_adventurers|Adventuring Company pt_peasant_army|Peasant Revolt Army pt_merc_barclay|Conquistadoros de Aventura pt_merc_generic|Mercenary Company pt_merc_mettenheim|Mettenheim Expeditionary Force pt_merc_freikorps_mettenheim|Freikorps Mettenheim pt_melitine_medium_spawn|Melitine Scouting Force pt_merc_jatu|Jatu Mercenaries pt_merc_vanskerry|Vanskerry Leiesoldat pt_merc_veccavian|Daughters of Persinoe pt_merc_singalian|Singalian Sellsword Company pt_slaver_singalian|Singalian Slavers pt_player_merc_mettenheim|The Freybrueder pt_player_merc_mettenheim_2|The Freybrueder part 2 pt_player_merc_veccavian|The Veccavian Renegades pt_player_merc_barclay|Primera Guardia Real pt_player_merc_melitine|The Sarno Expedition pt_player_merc_marleons|1st Banneret of Marleons pt_player_merc_unicorns|Sir Timothy's Knights pt_player_merc_red_brotherhood|Lothario's Brotherhood pt_player_merc_red_brotherhood_2|Lothario's Brotherhood part 2 pt_player_merc_snowlions|The Snowlion Brigade pt_player_merc_singalians|Firuz and his Singalian Slavers pt_player_merc_jatu|Chosen of Indar pt_player_merc_generic|The Free Company pt_player_merc_cheaters|Andy's Freeloading Cheaters pt_stronghold_patrol|Order Stronghold Patrol pt_ren_knights|Renegade Knights pt_cb5_results|Fleeing Enemies pt_noldor_elves|Noldor Ranger Company pt_errant_knights|Errant Knights pt_dread_legion_patrol|Dread Legion Patrol pt_eyegrim_patrol|Eyegrim's Demon Vanguard pt_wolfbode_patrol|Wolfbode's Patrol pt_three_seers_patrol|Three Seers Patrol pt_inquisitor_rasmus_patrol|Invokers of the Righteous Truth pt_wolfbode|Wolfbode the Slayer pt_dread_legion|Dread Legion pt_jatu_k_juda|K'Juda the Ravager pt_jatu_zulkar|Warlord Zulkar pt_eyegrim|Eyegrim the Devourer pt_brouhaha|Alaric von Brouhaha pt_burilgi_the_usurper|Burilgi the Usurper pt_oswald|Oswald de Fleur Adventure Company pt_griffonsword|Griffonsword Adventure Company pt_ironsword|Kodan Ironsword's Adventure Company pt_shalavan|Sheik Shalavan's Adventure Company pt_boristheraven|Sir Boris the Raven pt_three_seers|The Three Seers pt_noldor_lord_1|Aeldarian Noldor Lord pt_noldor_lord_2|Ithilrandir Noldor Lord pt_syla_uzas|Syla Uzas pt_mett_obrist|Obrist Heynrich pt_vecc_verante|The Renegade Witch Hunt pt_barclay_rufio|Tercio Villaviciosia pt_melitine_kaspax|Melitine Invasion Force pt_inquisitor|Holy Inquisitor Rasmus Devatica pt_madame_de_pompadour|Madame de Pompadour pt_refugees|Refugees pt_refugees_guarded|Armed Refugees pt_deserters|Deserters pt_merchant_caravan|Merchant Caravan pt_troublesome_bandits|Troublesome Bandits pt_bandits_awaiting_ransom|Bandits Awaiting Ransom pt_kidnapped_girl|Kidnapped Girl pt_village_farmers|Village Farmers pt_spy_partners|Unremarkable Travellers pt_runaway_serfs|Runaway Serfs pt_spy|Ordinary Townsman pt_sacrificed_messenger|Sacrificed Messenger pt_jatu_quest_army|Marauding Jatu Army pt_forager_party|Foraging Party pt_scout_party|Scouts pt_patrol_party|Patrol pt_messenger_party|Messenger pt_raider_party|Raiders pt_raider_captives|Raider Captives pt_kingdom_caravan_party|Caravan pt_prisoner_train_party|Prisoner Train pt_default_prisoners|Default Prisoners pt_routed_warriors|Routed Enemies pt_center_reinforcements|Reinforcements pt_kingdom_hero_party|War Party pt_kingdom_4_reinforcements_a|kingdom 4 reinforcements a pt_kingdom_4_reinforcements_b|kingdom 4 reinforcements b pt_kingdom_4_reinforcements_c|kingdom 4 reinforcements c pt_kingdom_5_reinforcements_a|kingdom 5 reinforcements a pt_kingdom_5_reinforcements_b|kingdom 5 reinforcements b pt_kingdom_5_reinforcements_c|kingdom 5 reinforcements c pt_kingdom_6_reinforcements_a|kingdom 6 reinforcements a pt_kingdom_6_reinforcements_b|kingdom 6 reinforcements b pt_kingdom_6_reinforcements_c|kingdom 6 reinforcements c pt_lethaldiran_reinforcements_a|Lethaldiran reinforcements a pt_lethaldiran_reinforcements_b|Lethaldiran reinforcements b pt_lethaldiran_reinforcements_c|Lethaldiran reinforcements c pt_boadice_reinforcements_a|Boadice reinforcements a pt_boadice_reinforcements_b|Boadice reinforcements b pt_boadice_reinforcements_c|Boadice reinforcements c pt_frederick_reinforcements_a|frederick reinforcements a pt_frederick_reinforcements_b|frederick reinforcements b pt_frederick_reinforcements_c|frederick reinforcements c pt_donavan_reinforcements_a|donavan reinforcements a pt_donavan_reinforcements_b|donavan reinforcements b pt_donavan_reinforcements_c|donavan reinforcements c pt_adonja_reinforcements_a|adonja reinforcements a pt_adonja_reinforcements_b|adonja reinforcements b pt_adonja_reinforcements_c|adonja reinforcements c pt_rayne_reinforcements_a|rayne reinforcements a pt_rayne_reinforcements_b|rayne reinforcements b pt_rayne_reinforcements_c|rayne reinforcements c pt_roland_reinforcements_a|roland reinforcements a pt_roland_reinforcements_b|roland reinforcements b pt_roland_reinforcements_c|roland reinforcements c pt_alistair_reinforcements_a|alistair reinforcements a pt_alistair_reinforcements_b|alistair reinforcements b pt_alistair_reinforcements_c|alistair reinforcements c pt_steppe_bandit_lair|D'Shar Raider Lair pt_snake_bandit_lair|Snake Cult Shrine pt_forest_bandit_lair|Brigand Camp pt_mountain_bandit_lair|Mystmountain Hideout pt_sea_raider_lair|Vanskerry Landing pt_looter_lair|Kidnappers' Hideout pt_treasure_lair|Treasure Map Location pt_leaded_looters|Band of Robbers pt_looters_quest|Band of Looters
https://w.atwiki.jp/vipcommittee/pages/131.html
自動バックアップ ネットワークトラフィックの監視 アクセス解析 通知メールの件名の文字化け サーバマシンの移行 マシンスペック OSのインストール 一般ユーザの作成 bashの環境設定 sudoユーザの設定 yumの設定 rootメールの転送先設定 sendmailの設定 Apacheの設定 Apacheのリバースプロクシとバーチャルホストの設定 PHPをダウングレード MySQLサーバの設定 MySQLデータのバックアップとリストア XOOPSやWikiデータのバックアップとリストア Apacheの起動 Wikiの添付ファイルの容量制限 登録ユーザ一覧の表示項目の変更 ネットワーク構成 リバースプロクシ(Reverse Proxy)の設定 (Solarisマシン) リモートIPの書き換え設定 (Linuxマシン) 新規登録できない! フォーラムに投稿できない!! 新規ユーザのイベント更新通知メッセージの受取方法をメールに変更する 新規ユーザのイベント通知機能をデフォルトでONにする デザイン 自動バックアップ http //www.t-sk.org/~chick/pukiwiki/index.php?pdumpfs%A4%C7%A5%D0%A5%C3%A5%AF%A5%A2%A5%C3%A5%D7 ネットワークトラフィックの監視 http //vip.okada-lab.org/mrtg/ ここ( http //fedorasrv.com/mrtg.shtml )を参考にして導入. アクセス解析 http //vip.okada-lab.org/usage/ 通知メールの件名の文字化け http //xoops.jp/smartsection+item.itemid+156.htm サーバマシンの移行 最初にWebサイトを立ち上げたサーバマシンは研究用であったため,新たにWebサーバ用にマシンを組み立てた後,Webのデータを全て移動させました. マシンスペック 新しいWebサーバのスペックは以下の通りです. CPU Intel Celeron-D 326 (2.53GHz, FSB 533MHz, 256KB L2Cache, EM64T, LGA775) マザーボード BIOSTAR i945G-M7 (i945G + ICH7, DDR2 DIMM×4スロット, 10/100Base-T (Realtek), -SATA2×4ポート, MicroATX) メモリ PQI JAPAN QD2533-512 (240pin, DIMM DDR2 SDRAM, 533MHz(PC4300), 512MB, 永久保証) ×2個 HDD Seagate ST3120813AS (120GB, 7200rpm, SATA 3Gb/s, 8MB Cache) PCケース Fast Corp. CS-221S300W (300W, MicroATX) これだけ合わせて,5万円弱で購入してきました. OSのインストール Fedora Core 4をインストールしました.(参考:http //fedorasrv.com/fedora4.shtml) まず,Fedora Coreプロジェクトの公式WebサイトからISOイメージ(FC4-i386-disc1.iso, FC4-i386-disc2.iso, FC4-i386-disc3.iso, FC4-i386-disc4.iso)をダウンロードしてきてCDに焼きます. BIOSの設定で最初にCD-ROMドライブから起動するようにしておき,1枚目のCDをCD-ROMドライブ(研究室の他のDOS/Vマシンから借用しました)に挿入して,選択肢は次のものを選びます. Langage Selection Japanese (日本語) キーボード設定 日本語 インストールの種類 カスタム ディスクパーティションの設定 自動パーティション設定 自動パーティション設定 システムのすべてのパーティションを削除, 作成された(そして変更された)パーティションを確認 ディスクの設定 (確認して次へ) ブートローダーの設定 (確認して次へ) ネットワークの設定 編集- DHCPを使わない, 手動設定 medinux, ゲートウェイ 192.168.1.4, 1番目のDNS 192.168.1.39 ファイヤーウォールの設定 ファイアウォールなし, 無効 タイムゾーンの選択 アジア/東京 Rootパスワードを設定 hogehoge, hogehoge パッケージグループの選択 (httpdやtelnet等を選択.後からyumでインストールできるので,あまりこだわらなくてもいいかも) インストール準備完了 (無事にインストールが完了することを願って「次」ボタンをクリック) (どこかでntpサーバを設定するところがあったはず... ntpサーバに関してはここを参照.) 一般ユーザの作成 初めて起動するとFirst Bootが動いてユーザの作成等ができる.ここで,一般ユーザ(vip)を作っておく. bashの環境設定 $ vi ~/.bash_profile 最後に以下を追加. alias mv= mv -i alias cp= cp -i alias rm= rm -i alias jeuc= LANG=ja_JP.eucJP alias jutf= LANG=ja_JP.utf8 alias eng= LANG=C sudoユーザの設定 システムの設定をする際にいちいちrootユーザになるのも面倒なときがあるので,sudoを使えるようにする. $ su - # vi /etc/sudoers # %wheel ALL=(ALL) ALL ↓コメントアウトを削除 %wheel ALL=(ALL) ALL # vi /etc/group wheel x 10 root ↓ユーザ名を追加 wheel x 10 root,vip yumの設定 http //fedorasrv.com/fedora4-init.shtmlの「(5) パッケージ管理システム設定」を参考にして,yumがrpmをダウンロードしてくるサーバを日本のミラーサイトに限定させる. ただし,yum -y updateをすると時間がかかるので後回し. rootメールの転送先設定 root宛てのメールが自分に届くようにする. # vi /etc/aliases #root marc ↓変更 root hogehoge@okada-lab.org sendmailの設定 # echo "vip.okada-lab.org" /etc/mail/local-host-names # echo "vip.okada-lab.org RELAY" /etc/mail/access # makemap hash /etc/mail/access /etc/mail/access Apacheの設定 # vi /etc/httpd/conf/httpd.conf ServerTokens OS ↓変更 ### by tasaki 2006-05-23 ###ServerTokens OS ServerTokens Prod #ServerName www.example.com 80 ↓変更 ### by tasaki 2006-05-23 #ServerName www.example.com 80 ServerName medinux.okada-lab.org 80 Options Indexes FollowSymLinks ↓変更 ### by tasaki 2006-05-23 ### Options Indexes FollowSymLinks Options Indexes ExecCGI FollowSymLinks AllowOverride None ↓変更 ### by tasaki 2006-05-23 ### AllowOverride None AllowOverride All ServerSignature On ↓変更 ### by tasaki 2006-05-23 ###ServerSignature On ServerSignature Off AddDefaultCharset UTF-8 ↓変更 ### by tasaki 2006-05-23 ###AddDefaultCharset UTF-8 #AddHandler cgi-script .cgi ↓変更 ### by tasaki 2006-05-23 AddHandler cgi-script .cgi .pl Apacheのリバースプロクシとバーチャルホストの設定 rpaf_moduleに関しては下記を参照. # vi /etc/httpd/conf.d/virtualhost.conf LoadModule rpaf_module /usr/lib/httpd/modules/mod_rpaf-2.0.so RPAFenable On RPAFsethostname Off RPAFproxy_ips 192.168.1.39 NameVirtualHost vip.okada-lab.org 80 NameVirtualHost vip.okada-lab.org 8080 VirtualHost vip.okada-lab.org 80 ServerName vip.okada-lab.org /VirtualHost VirtualHost vip.okada-lab.org 8080 ServerName vip.okada-lab.org /VirtualHost バーチャルホストを使っているのは,以前8080番ポートで運用していたときの名残です. PHPをダウングレード Fedora Core 4には標準でPHP5系がインストールされます.しかし,XOOPSやWikiを動作させる際にPHP5系では不具合がでることがあります.そこで,PHP5系をPHP4系にダウングレードさせます. http //www.t-sk.org/~chick/pukiwiki/index.php?Fedora%20Core%204%A4%C7PHP4を参考. yumで自動的にアップデートされないように次の記述を追加する. # vi /etc/yum.conf 最後に追加. exclude=kernel* php* MySQLサーバの設定 まず,http //fedorasrv.com/mysql.shtmlを参考にして,MySQLサーバの初期設定をする. 次に,http //fedorasrv.com/xoops.shtmlを参考にして,MySQLサーバ上にXOOPS用のデータベースとユーザを作成します.このとき,データベース名を「xoops」としておくとセキュリティ的によろしくないので,別の名前にすると良い. MySQLデータのバックアップとリストア 旧サーバにて次のコマンドを実行してMySQLのデータをバックアップします. $ mysqldump -u MySQLのユーザ名 -pパスワード XOOPSのデータベース名 xoops.bak このxoops.bakをscp等を使って新サーバに移動させた後,次のコマンドを実行してリストアします. $ mysql -u MySQLのユーザ名 -pパスワード データベース名 xoops.bak XOOPSやWikiデータのバックアップとリストア 旧サーバにて次のコマンドを実行してXOOPSやWikiのデータをバックアップします. # cd /var/www # tar cvfz ~/html.tar.gz html/ このhtml.tar.gzをscp等を使って新サーバに移動させた後,次のコマンドを実行してリストアします. # tar xvfz html.tar.gz --same-owner -C /var/www Apacheの起動 # /etc/rc.d/init.d/httpd start Wikiの添付ファイルの容量制限 http //pukiwiki.sourceforge.jp/?%E7%B6%9A%E3%83%BB%E8%B3%AA%E5%95%8F%E7%AE%B1%2F544 登録ユーザ一覧の表示項目の変更 白扇の機能を使ってユーザ情報に所属大学や所属研究室の項目を追加したけど,登録ユーザ一覧にそれらが反映されてません. そこで,xoopsmembers_searchresults.htmlのテンプレートを変更しました. 6行目 (以下は見やすくするために改行しておきました) th align="center" {$lang_avatar} /th th align="center" {$lang_username} /th th align="center" {$lang_realname} /th th align="center" 所属大学 /th th align="center" 所属研究室 /th th align="center" 職業 /th th align="center" {$lang_email} /th th align="center" {$lang_url} /th th align="center" {$lang_regdate} /th th align="center" {$lang_lastlogin} /th th align="center" {$lang_posts} /th 13行目 (以下は見やすくするために改行しておきました) td class="even" {$users[i].avatar} /td td class="odd" a href=" {$xoops_url} /userinfo.php?uid= {$users[i].id} " {$users[i].name} /a /td td class="even" {$users[i].realname} /td td class="odd" {$users[i].id|suin_user "var32"} /td td class="even" {$users[i].id|suin_user "var33"} /td td class="odd" {$users[i].id|suin_user "var36"} /td td align="center" class="even" {$users[i].email} /td td class="odd" align="center" {$users[i].website} /td td class="even" align="center" {$users[i].registerdate} /td td class="odd" align="center" {$users[i].lastlogin} /td td class="even" align="center" {$users[i].posts} /td 上記でsuin_userとあるのは,白扇モジュール作者が作成したSmartyプラグインです.http //www.suin.jp/modules/mydownloads/singlefile-cid-10-lid-38.asp ネットワーク構成 #ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (network.jpg) 合同合宿のWebサイトにはLAMP(Linux + Apache + MySQL + PHP)環境下でXOOPSとWikiを運用したいなぁ (だって,インターネット上にたくさん情報があるんだもん!).でも,岡田研究室にはグローバルIPは1個しかないからなぁ,80番ポートにリクエストがあるとSolarisに構築されたメインWebサーバが応答しちゃう.さぁー どーしよー. 方法その1 81番ポートでアクセスされたらルータの設定で192.168.1.17にIPフォワードしよう! 結果 セキュリティポリシーが厳しいネットワーク環境だと,81番なんていう変なポートはアクセスできない. 方法その2 81番がだめなら8080番ポートを使えばいいんじゃない? 結果 セキュリティポリシーが非常に厳しいネットワーク環境だと,8080番もアクセスできない. 方法その3 リバースプロクシでプライベートネットワーク内のWebサーバからコンテンツを呼び出す. 結果 今のとこいい感じ♪ リバースプロクシ(Reverse Proxy)の設定 (Solarisマシン) Solarisマシンの/etc/apache/httpd.confの最後に次の記述を追加する. # for VIP Camp added by Tasaki 2006-04-05 VirtualHost 192.168.1.39 ServerAdmin admin@okada-lab.org ServerName vip.okada-lab.org ProxyRequests off ProxyPass / http //192.168.1.17 80/ ErrorLog /usr/local/apache/logs/vip-error_log CustomLog /usr/local/apache/logs/vip-access_log combined /VirtualHost 設定を保存したら次のコマンドでApacheを再起動する. # /usr/apache/bin/apachectl restart リモートIPの書き換え設定 (Linuxマシン) 上の設定でリバースプロクシはできるのですが,Linuxマシン上のApacheのログを見ると全てSolarisマシン(192.168.1.39)からのアクセスとして記録されます.これだと,リモートIPによるアクセス解析や(もし荒らされた場合に)アクセス制限とかができなくなっちゃいます. そこで導入したのが,mod_rpafというApacheの追加モジュールです. http //stderr.net/apache/rpaf/ リバースプロクシはユーザからのリクエスト受けて,別のマシンに代理でリエストするときに,リモートIP(ユーザのIP)情報をX-Forwarded-Forというリクエストヘッダーに保存しています.mod_rpafモジュールは特定の信頼できるホストからリクエストがあった場合,リモートIP情報をX-Forwarded-Forの値で上書きします.これにより,Linuxマシンのログには正しくユーザのIPが記録されるようになります. 公式サイトよりmod_rpafの最新版(2006-04現在ver. 0.5)をダウンロードしてきて,次のようにしてコンパイル インストールする. $ tar xvfz mod_rpaf-0.5.tar.gz $ cd mod_rpaf-0.5 $ vi Makefile APXS=/home/thomas/build/apache-dev/bin/apxs ↓書き換え APXS=/usr/sbin/apxs $ make rpaf-2.0 # make install-2.0 Linuxマシンの/etc/httpd/conf/httpd.confの最後に次の記述を追加する. # for VIP Camp added by Tasaki 2006-04-05 LoadModule rpaf_module /usr/lib/httpd/modules/mod_rpaf-2.0.so RPAFenable On RPAFsethostname Off RPAFproxy_ips 192.168.1.39 最後のRPAFproxy_ipsでリバースプロクシを設定しているホスト(Soralisマシン)のIPを指定します. 設定を保存したら次のコマンドでApacheを再起動する. # /etc/rc.d/init.d/httpd restart Linuxマシンに記録されるログは次のように改善されました. mod_rpad適用前 192.168.1.39 - - [05/Apr/2006 17 15 28 +0900] "GET / HTTP/1.1" ... mod_rpad適用後 xx.22.95.202 - - [06/Apr/2006 17 54 37 +0900] "GET / HTTP/1.1" ... 参考:http //www.namazu.org/~takesako/diary/?date=20031205 新規登録できない! フォーラムに投稿できない!! XOOPSのデフォルトの設定では,CSRF攻撃対策のためにブラウザから送信されるHTTP_REFERER情報をチェックしています.しかし,Norton等を利用している場合,HTTP_REFERER情報が送信されないことがあります.そのために,新規登録できなかったり,フォーラムに投稿できなかったりします. これを改善するためには,ユーザに対してNortonの設定でHTTP_REFERERを送信するように変更してもらうと良い. Nortonの設定方法:http //snow-drop.or.tv/norton/ しかし,一般ユーザにRefererうんぬんの話をするのはとても大変です. そこで考えられるもう一つの手段は,XOOPSのコアをハックしてHTTP_REFERERをチェックしている部分を機能しなくさせる方法です. XOOPS_ROOT/include/functions.php 155行目~ function xoops_refcheck($docheck=1) { $ref = xoops_getenv(? HTTP_REFERER? ); if ($docheck == 0) { return true; } if ($ref == ? ? ) { ### 2006-03-07 by tasaki ### return false; return true; } if (strpos($ref, XOOPS_URL) !== 0 ) { return false; } return true; } ただし,これは? ? 改悪手法? ? でもあります.明示的にセキュリティの穴を作るわけですから,当然悪意あるユーザによって大量のユーザを登録されたりフォーラムを荒らされたりする可能性が生じます. ※ご存知の方もいらっしゃると思いますが,ソーシャルネットワーキングサイトのmixiで「ぼくはまちちゃん!」という書き込みが連鎖的に広がっていったのも,このCSRF攻撃によるものです. 参考 http //xoops.s22.xrea.com 8080/modules/newbb/viewtopic.php?topic_id=202&forum=3&post_id=896 http //www.itmedia.co.jp/news/articles/0504/23/news005.html http //bakera.jp/hatomaru.aspx/glossary/0043005300520046 http //www.tdiary.org/20050721.html 新規ユーザのイベント更新通知メッセージの受取方法をメールに変更する XOOPS_ROOT/kernel/user.phpの98行目を次のように変更する. $this- initVar(? notify_method? , XOBJ_DTYPE_OTHER, 1, false); ↓ $this- initVar(? notify_method? , XOBJ_DTYPE_OTHER, 2, false); 新規ユーザのイベント通知機能をデフォルトでONにする 参考 URL フォーラムの新着情報イベントをユーザに送信させたいが,デフォルトでは全てのイベントを通知しないようになっている. SQL文を発行してxoopsnotificationsテーブルにフィールドを直接追加する. 例 ユーザID 50~100番の(未登録)ユーザに「新規トピックまたは返信の投稿があった場合に通知する」のイベントを通知させる. % vi not.pl #!/usr/bin/perl -w for ($i = 50; $i = 100; $i++) { print ?"INSERT INTO XOOPSデータベース名.XOOPSデータベース接頭辞_xoopsnotifications?" . ?" (not_id, not_modid, not_itemid, not_category,?" . ?" not_event, not_uid, not_mode)?" . ?" VALUES ( NULL, モジュールID, アイテムID, ? global? , ? new_post? , $i, 0);??n?"; } % perl not.pl not.sql % mysql -u データベースユーザ名 -p not.sql Enter password パスワード入力 ただし,? ? XOOPSデータベース名? ? ,? ? XOOPSデータベース接頭辞? ? ,? ? モジュールID? ? ,? ? アイテムID? ? は環境に合わせて適宜変更してください.モジュールIDやカテゴリ名等は実際にそのイベントをOn/Offしてみたときにデータベース内の値がどう変わるかをphpmyadminで確認するとわかると思います (もっと簡単にわかる方法ないのかなぁ~). デザイン Special Thanks ☆ to-biさん 「Webページ作成係備忘録」を編集
https://w.atwiki.jp/anime_wiki/pages/16924.html
■獣旋バトル モンスーノ 脚本 13 ■爆丸エボリューションズ 脚本 SP1(D) SP2(D) ■関連タイトル OPテーマ Rey/MONSUNO! rakuten_design= slide ;rakuten_affiliateId= 053df7e0.7c451bd1.0c852203.190c5695 ;rakuten_items= ctsmatch ;rakuten_genreId=0;rakuten_size= 468x160 ;rakuten_target= _blank ;rakuten_theme= gray ;rakuten_border= on ;rakuten_auto_mode= on ;rakuten_genre_title= off ;rakuten_recommend= on ; 随時更新! pixivFANBOX アニメ@wiki ご支援お待ちしています! ムック本&画集新刊/個人画集新刊/新作Blu-ray単巻/新作Blu-ray DVD-BOX アニメ原画集全リスト スタッフインタビューwebリンク集 最新登録アイテム Switch ゼルダの伝説 Tears of the Kingdom Switch 世界樹の迷宮Ⅰ・Ⅱ・Ⅲ HD REMASTER Switch ピクミン 4 大友克洋 Animation AKIRA Layouts Key Frames 2 小説 機動戦士ガンダム 水星の魔女 1 ONE PIECE FILM REDデラックス・リミテッド・エディション 4K ULTRA HD Blu-ray Blu-ray 劇場版 ソードアート・オンライン -プログレッシブ- 冥き夕闇のスケルツォ 完全生産限定版 Blu-ray 映画『ゆるキャン△』 Blu-ray 【コレクターズ版】 Blu-ray ウマ娘 プリティーダービー 4th EVENT SPECIAL DREAMERS!! Blu-ray 天地無用!GXP パラダイス始動編 Blu-ray第1巻 特装版 天地無用!魎皇鬼 第伍期 Blu-ray SET 「GS美神」全話いっき見ブルーレイ Blu-ray ソードアート・オンライン -フルダイブ- メーカー特典:「イベントビジュアル使用A3クリアポスター」付 ラブライブ!虹ヶ咲学園スクールアイドル同好会 5th Live! 虹が咲く場所 Blu-ray Memorial BOX 宇宙戦艦ヤマト2202 愛の戦士たち Blu-ray BOX 特装限定版 地球へ… Blu-ray Disc BOX 完全生産限定版 神風怪盗ジャンヌ Complete Blu-ray BOX HUNTER×HUNTER ハンター試験編・ゾルディック家編Blu-ray BOX BLEACH Blu-ray Disc BOX 破面篇セレクション1+過去篇 完全生産限定版 MAZINGER THE MOVIE 1973-1976 4Kリマスター版 アニメ・ゲームのロゴデザイン シン・仮面ライダー 音楽集 テレビマガジン特別編集 仮面ライダー 完全版 EPISODE No.1~No.98 MOVIE リスアニ!Vol.50.5 ぼっち・ざ・ろっく!号デラックスエディション ヤマノススメ Next Summit アニメガイド おもいでビヨリ アニメ「魔入りました!入間くん」オフィシャルファンブック 『超時空要塞マクロス』パッケージアート集 CLAMP PREMIUM COLLECTION X 1 トーマの心臓 プレミアムエディション パズル ドラゴンズ 10th Anniversary Art Works はんざわかおり こみっくがーるず画集 ~あばばーさりー!~ あすぱら画集 すいみゃ Art Works trim polka-トリムポルカ- つぐもも裏 超!限界突破イラスト&激!すじ供養漫画集 開田裕治ウルトラマンシリーズ画集 井澤詩織1st写真集 mascotte 鬼頭明里写真集 my pace 内田真礼 1st photobook 「まあやドキ」 進藤あまね1st写真集 翠~Midori~ 声優 宮村優子 対談集 アスカライソジ 三石琴乃 ことのは 亀田祥倫アートワークス 100% 庵野秀明責任編集 仮面ライダー 資料写真集 1971-1973 金子雄司アニメーション背景美術画集 タローマン・クロニクル ラブライブ!サンシャイン!! Find Our 沼津~Aqoursのいる風景~ 機動戦士ガンダム 逆襲のシャア 友の会[復刻版] 梅津泰臣 KISS AND CRY 資料集 安彦良和 マイ・バック・ページズ 『機動戦士ガンダム ククルス・ドアンの島』編 氷川竜介 日本アニメの革新 歴史の転換点となった変化の構造分析 Blu-ray THE IDOLM@STER CINDERELLA GIRLS 10th Anniversary Celebration Animation ETERNITY MEMORIES Blu-ray おいら宇宙の探鉱夫 ブルーレイ版 Blu-ray 映画 バクテン!! 完全生産限定版 アイカツ! 10th STORY ~未来へのSTARWAY~ Blu-ray BOX 初回生産限定版 はたらく細胞 Blu-ray Disc BOX 完全生産限定版 Blu-ray 長靴をはいた猫 3作品収録 Blu-ray わんぱく王子の大蛇退治 Blu-ray 魔道祖師 完結編 完全生産限定版 魔道祖師Q Blu-ray Disc BOX 完全生産限定盤 にじよん あにめーしょん Blu-ray BOX 【特装限定版】 Blu-ray 鋼の錬金術師 完結編 プレミアム・エディション Blu-ray付き やはりゲームでも俺の青春ラブコメはまちがっている。完 限定版【同梱物】オリジナルアニメ Blu-ray「だから、思春期は終わらずに、青春は続いていく。」
https://w.atwiki.jp/equites/pages/188.html
MadTParty #ref error :画像URLまたは、画像ファイル名を指定してください。 入党時期 キャラクター1 キャラクター2 キャラクター3 他メインキャラ 戦闘スタイル 党首について 好きなNPC 好きなコス 好きなエリア クエスト挑戦可否 聖魔水 トルシェ地下 ジャケン地下 ひとこと
https://w.atwiki.jp/cowbell/pages/16.html
Hibernate3.3 + Annotation + EntityManager 以下のjarが必要 (hibernate-coreより) hibernate3.jar antlr-2.7.6.jar commons-collections-3.1.jar dom4j-1.6.1.jar javassist-3.4.GA.jar jta-1.1.jar (sl4jより) slf4j-nop-1.5.6.jar slf4j-api-1.5.6.jar (hibernate-entitymanagerより) hibernate-entitymanager.jar ejb3-persistence.jar hibernate-annotations.jar hibernate-commons-annotations.jar 以下のEclipseフォルダ構成で検証 HibernateTest /src /com /dao /entity ・EmployeeEntity.java /META-INF ・persistence.xml persistence.xml persistence xmlns="http //java.sun.com/xml/ns/persistence" xmlns xsi="http //www.w3.org/2001/XMLSchema-instance" xsi schemaLocation="http //java.sun.com/xml/ns/persistence http //java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0" persistence-unit name="sample" transaction-type="RESOURCE_LOCAL" class com.entity.EmployeeEntity /class properties property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" / property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver" / property name="hibernate.connection.url" value="jdbc mysql //localhost 3306/sampledb" / property name="hibernate.connection.username" value="userid" / property name="hibernate.connection.password" value="passwd" / property name="hibernate.connection.pool_size" value="1" / property name="hibernate.current_session_context_class" value="managed" / property name="hibernate.show_sql" value="true" / property name="hibernate.format_sql" value="true" / /properties /persistence-unit /persistence
https://w.atwiki.jp/joaillerie1114/
このwikiは「joaillerie1114」こと月賦様(青木●子様)のファンサイトです☆ミ joaillerie1114様が自ら発言したもの、そして 実際に彼女自身が起こした出来事をまとめたものであり、 wiki編集もそれに則り行われるものとします。 ★月賦(joaillerie様)って何者?本名は何?本当に研究者でVIPなの? その疑問はごもっともです!月賦に関する基礎知識はこちらから! joaillerie1114様ご本人が厳選して自ら公開した奇跡の一枚 ttp //i3.6.cn/cvbnm/76/75/70/b2311232eb4c3edb609a27651936255f.jpg これまでの流れ mixiのLVコミュで特別室自慢 ↓ LVコミュで少々気に食わない相手(本当のVIP)に熱心にメッセージを送りつけ、 何人も退会へ追い込む。 ↓ ヲチスレ立つ ↓ mixi退会(事実上の追放=強制排除処分になってしまわれました><) ↓ アメブロでjoaillerie名義のブログ開始 ↓ N先生の名前と写真を公開事件(→妄想セクハラ裁判・N先生のwiki荒らしも参照のこと) Wikipediaにご自身で登録事件(→自称「研究者」詳細) 私に対する批判がしたいのなら、論理的に批判せよ事件 芸能人・有名人のブログに自意識過剰なコメントをしまくる 多数のLVブロガーに嫌がらせ(休止・閉鎖したブログも) ↓ アメーバピグ開始 ↓ 学会で忙しいと言いつつ、一日中入り浸り エ○チャットをもちかけ、断った男性に嫌がらせ 通りすがりのピグと意見の相違 ピグを多数作って自作自演(2010年6月現在で少なくとも20体のサブピグ確認済み) mixi時代に揉めた相手名を名乗り自己紹介 ↓ twitter開始 ↓ 袖にされた男性に喧嘩をふっかけトラブル 一人応援団Joa事件 仲間や馴れ合い批判を反論されてフンガー ↓ 次は何かなー ←今ココ! ∧_∧ + (0゜・∀・) (0゜∪ ∪ + と__)__) + ヲチスレ降臨も待たれるわ! ★ボログにカウントされず、かつ解析避けも♪(推奨)←2011/1/16現在、このURLはあまり効果がなさそう?と判明 ttp //anonymouse.org/cgi-bin/anon-www.cgi/http //feedblog.ameba.jp/rss/ameblo/joaillerie/rss20.xml ★解析避けはこちらから ttp //anonymouse.org/cgi-bin/anon-www.cgi/http //ameblo.jp/joaillerie/ ★joaillerie1114様魚拓 ttp //megalodon.jp/?url=http%3A%2F%2Fameblo.jp%2Fjoaillerie%2F ★joaillerie1114様最新情報 What s New!!! 2010/09/04 ★ピグ4体自演をバラされ逆ギレして大暴れ。 ↓joaillerie1114様にメールを送った人のブログ。送ってもいないキャラ達からのレスが笑える。 ttp //ameblo.jp/kon-ape/ ★joaillerie1114様の妄想が生み出したキャラ達 相変わらず発想が少しだけ残念ではありますが一目で捏造キャラとわかるのがjoaillerie1114様クオリチー。 表示名を頻繁に替え出没するが、持ち物・着ている物があくまでも無料なのもjoaillerie1114様クオリチー。 コウ→コウ(KOH)(ttp //ameblo.jp/ken-ape/) あさか→asaka(ttp //ameblo.jp/kurara1/) ミリヤ(ttp //ameblo.jp/xzz1/) nao→ノリ→なおき→nao→kazu(ttp //ameblo.jp/joa-joa1/) りえ(ttp //ameblo.jp/u11/) joaillerie様のおっかけ→まこ(ttp //ameblo.jp/joaillerie11/) KOH→コウ→K→ex(ttp //ameblo.jp/kkkoh/) tk(ttp //profile.ameba.jp/tk-1023/) J先生→先生(ttp //ameblo.jp/joaillerie111/) J×LVJ→JLV(ttp //ameblo.jp/joaillerie1-1/) 【NEW】以下、なりすましモデル3体。東京人、渋谷区、港区在住をアピ Julie(ttp //ameblo.jp/julie-goldman/) Josh(ttp //ameblo.jp/josh-adams/) Brian(ttp //ameblo.jp/brian-underwood/) ここからの8体は勝手な被害妄想の末、joaillerie1114様が逆恨みした相手ピグ冒涜用キャラ。 相手をストーカー呼ばわりした上「ピグごときで騒ぐな」と開き直る。 相手の人は完全な冤罪被害者だが月賦が自分の過ちを認めることはないため今後も冒涜は続く模様。 ラッシャーウラン→サマー(便乗型)(ttp //ameblo.jp/uran9/) 武庫川ウラン→ラッシャーウラン(ttp //ameblo.jp/uran999/) 武庫川ウラン→ウラン(間もなくクビで逮捕)を調査する(ttp //ameblo.jp/uran9-9/) ラッシャーウラン→ラッシャーウラン(間もなくクビ)(ttp //ameblo.jp/uran777/) mignon(ttp //ameblo.jp/mignon1/) mignon(ttp //ameblo.jp/mignon18091/) mignon(ttp //ameblo.jp/mignon666/) 最後の3体は自分万歳用に一旦作成したもののファンに指摘され現在は削除されているもの。 アリエルラブ(ttp //ameblo.jp/ariel-pink/) りぃ(ttp //ameblo.jp/amour-y/) 武庫川ウラン→ラッシャーウラン&サマー(名無し)(ttp //ameblo.jp/uran99999/) @wikiの基本操作 用途別のオススメ機能紹介 @wikiの設定/管理 分からないことは? @wiki ご利用ガイド よくある質問 無料で会員登録できるSNS内の@wiki助け合いコミュニティ @wiki更新情報 @wikiへのお問合せフォーム 等をご活用ください @wiki助け合いコミュニティの掲示板スレッド一覧 #atfb_bbs_list その他お勧めサービスについて 大容量1G、PHP/CGI、MySQL、FTPが使える無料ホームページは@PAGES 無料ブログ作成は@WORDをご利用ください 2ch型の無料掲示板は@chsをご利用ください フォーラム型の無料掲示板は@bbをご利用ください お絵かき掲示板は@paintをご利用ください その他の無料掲示板は@bbsをご利用ください 無料ソーシャルプロフィールサービス @flabo(アットフラボ) おすすめ機能 気になるニュースをチェック 関連するブログ一覧を表示 その他にもいろいろな機能満載!! @wikiプラグイン @wiki便利ツール @wiki構文 @wikiプラグイン一覧 まとめサイト作成支援ツール バグ・不具合を見つけたら? 要望がある場合は? お手数ですが、メールでお問い合わせください。
https://w.atwiki.jp/amazonz/pages/39.html
アップロード ?php require_once( Connections/connAmazon2.php ); ? !-- アクセス制御 -- ?php session_start(); $MM_authorizedUsers = ""; $MM_donotCheckaccess = "true"; function isAuthorized($strUsers, $strGroups, $UserName, $UserGroup) { // For security, start by assuming the visitor is NOT authorized. $isValid = False; // When a visitor has logged into this site, the Session variable MM_Username set equal to their username. // Therefore, we know that a user is NOT logged in if that Session variable is blank. if (!empty($UserName)) { // Besides being logged in, you may restrict access to only certain users based on an ID established when they login. // Parse the strings into arrays. $arrUsers = Explode(",", $strUsers); $arrGroups = Explode(",", $strGroups); if (in_array($UserName, $arrUsers)) { $isValid = true; } // Or, you may restrict access to only certain users based on their username. if (in_array($UserGroup, $arrGroups)) { $isValid = true; } if (($strUsers == "") true) { $isValid = true; } } return $isValid; } $MM_restrictGoTo = "account_cre2.php"; if (!(*1) (isAuthorized("",$MM_authorizedUsers, $_SESSION[ MM_Username ], $_SESSION[ MM_UserGroup ])))) { $MM_qsChar = "?"; $MM_referrer = $_SERVER[ PHP_SELF ]; if (strpos($MM_restrictGoTo, "?")) $MM_qsChar = " "; if (isset($QUERY_STRING) strlen($QUERY_STRING) 0) $MM_referrer .= "?" . $QUERY_STRING; $MM_restrictGoTo = $MM_restrictGoTo. $MM_qsChar . "accesscheck=" . urlencode($MM_referrer); header("Location ". $MM_restrictGoTo); exit; } ? ?php $currentPage = $_SERVER["PHP_SELF"]; $maxRows_rsAmazonz2 = 5; $pageNum_rsAmazonz2 = 0; if (isset($_GET[ pageNum_rsAmazonz2 ])) { $pageNum_rsAmazonz2 = $_GET[ pageNum_rsAmazonz2 ]; } $startRow_rsAmazonz2 = $pageNum_rsAmazonz2 * $maxRows_rsAmazonz2; $colname_rsAmazonz2 = "%"; if (isset($_GET[ key ])) { $colname_rsAmazonz2 = (get_magic_quotes_gpc()) ? $_GET[ key ] addslashes($_GET[ key ]); } mysql_select_db($database_connAmazon2, $connAmazon2); $query_rsAmazonz2 = sprintf("SELECT * FROM amazonz_data WHERE topic LIKE %s ORDER BY uptime DESC", $colname_rsAmazonz2); $query_limit_rsAmazonz2 = sprintf("%s LIMIT %d, %d", $query_rsAmazonz2, $startRow_rsAmazonz2, $maxRows_rsAmazonz2); $rsAmazonz2 = mysql_query($query_limit_rsAmazonz2, $connAmazon2) or die(mysql_error()); $row_rsAmazonz2 = mysql_fetch_assoc($rsAmazonz2); if (isset($_GET[ totalRows_rsAmazonz2 ])) { $totalRows_rsAmazonz2 = $_GET[ totalRows_rsAmazonz2 ]; } else { $all_rsAmazonz2 = mysql_query($query_rsAmazonz2); $totalRows_rsAmazonz2 = mysql_num_rows($all_rsAmazonz2); } $totalPages_rsAmazonz2 = ceil($totalRows_rsAmazonz2/$maxRows_rsAmazonz2)-1; $queryString_rsAmazonz2 = ""; if (!empty($_SERVER[ QUERY_STRING ])) { $params = explode(" ", $_SERVER[ QUERY_STRING ]); $newParams = array(); foreach ($params as $param) { if (stristr($param, "pageNum_rsAmazonz2") == false stristr($param, "totalRows_rsAmazonz2") == false) { array_push($newParams, $param); } } if (count($newParams) != 0) { $queryString_rsAmazonz2 = " " . htmlentities(implode(" ", $newParams)); } } $queryString_rsAmazonz2 = sprintf(" totalRows_rsAmazonz2=%d%s", $totalRows_rsAmazonz2, $queryString_rsAmazonz2); ? ?php session_start(); $logoutAction = $_SERVER[ PHP_SELF ]."?doLogout=true"; if (*2) ($_SERVER[ QUERY_STRING ] != "")){ $logoutAction .=" ". htmlentities($_SERVER[ QUERY_STRING ]); } if (*3) ($_GET[ doLogout ]=="true")){ //to fully log out a visitor we need to clear the session varialbles session_unregister( MM_Username ); session_unregister( MM_UserGroup ); $logoutGoTo = "top.php"; if ($logoutGoTo) { header("Location $logoutGoTo"); exit; } } ? ?php $currentPage = $_SERVER["PHP_SELF"]; function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") { $theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) $theValue; switch ($theType) { case "text" $theValue = ($theValue != "") ? " " . $theValue . " " "NULL"; break; case "long" case "int" $theValue = ($theValue != "") ? intval($theValue) "NULL"; break; case "double" $theValue = ($theValue != "") ? " " . doubleval($theValue) . " " "NULL"; break; case "date" $theValue = ($theValue != "") ? " " . $theValue . " " "NULL"; break; case "defined" $theValue = ($theValue != "") ? $theDefinedValue $theNotDefinedValue; break; } return $theValue; } $editFormAction = $_SERVER[ PHP_SELF ]; if (isset($_SERVER[ QUERY_STRING ])) { $editFormAction .= "?" . htmlentities($_SERVER[ QUERY_STRING ]); } if (*4) ($_POST["MM_insert"] == "form2")) { $insertSQL = sprintf("INSERT INTO amazonz_data (id, title, category, topic, uptime, uset_id) VALUES (%s, %s, %s, %s, %s, %s)", GetSQLValueString($_POST[ id ], "int"), GetSQLValueString($_POST[ title ], "text"), GetSQLValueString($_POST[ category ], "text"), GetSQLValueString($_POST[ topic ], "text"), GetSQLValueString($_POST[ uptime ], "date"), GetSQLValueString($_POST[ uset_id ], "text")); mysql_select_db($database_connAmazon2, $connAmazon2); $Result1 = mysql_query($insertSQL, $connAmazon2) or die(mysql_error()); $insertGoTo = "admin2.php"; if (isset($_SERVER[ QUERY_STRING ])) { $insertGoTo .= (strpos($insertGoTo, ? )) ? " " "?"; $insertGoTo .= $_SERVER[ QUERY_STRING ]; } header(sprintf("Location %s", $insertGoTo)); } $maxRows_rsAmazonz2 = 5; $pageNum_rsAmazonz2 = 0; if (isset($_GET[ pageNum_rsAmazonz2 ])) { $pageNum_rsAmazonz2 = $_GET[ pageNum_rsAmazonz2 ]; } $startRow_rsAmazonz2 = $pageNum_rsAmazonz2 * $maxRows_rsAmazonz2; mysql_select_db($database_connAmazon2, $connAmazon2); $query_rsAmazonz2 = "SELECT * FROM amazonz_data ORDER BY uptime DESC"; $query_limit_rsAmazonz2 = sprintf("%s LIMIT %d, %d", $query_rsAmazonz2, $startRow_rsAmazonz2, $maxRows_rsAmazonz2); $rsAmazonz2 = mysql_query($query_limit_rsAmazonz2, $connAmazon2) or die(mysql_error()); $row_rsAmazonz2 = mysql_fetch_assoc($rsAmazonz2); if (isset($_GET[ totalRows_rsAmazonz2 ])) { $totalRows_rsAmazonz2 = $_GET[ totalRows_rsAmazonz2 ]; } else { $all_rsAmazonz2 = mysql_query($query_rsAmazonz2); $totalRows_rsAmazonz2 = mysql_num_rows($all_rsAmazonz2); } $totalPages_rsAmazonz2 = ceil($totalRows_rsAmazonz2/$maxRows_rsAmazonz2)-1; mysql_select_db($database_connAmazon2, $connAmazon2); $sessionname=$_SESSION[ MM_Username ]; $query_rsAmazonz2 = sprintf("SELECT * FROM amazonz_data WHERE topic LIKE %s uset_id = $sessionname ORDER BY uptime DESC" , $colname_rsAmazonz2); $query_limit_rsAmazonz2 = sprintf("%s LIMIT %d, %d", $query_rsAmazonz2, $startRow_rsAmazonz2, $maxRows_rsAmazonz2); $rsAmazonz2 = mysql_query($query_limit_rsAmazonz2, $connAmazon2) or die(mysql_error()); $row_rsAmazonz2 = mysql_fetch_assoc($rsAmazonz2); if (isset($_GET[ totalRows_rsAmazonz2 ])) { $totalRows_rsAmazonz2 = $_GET[ totalRows_rsAmazonz2 ]; } else { $all_rsAmazonz2 = mysql_query($query_rsAmazonz2); $totalRows_rsAmazonz2 = mysql_num_rows($all_rsAmazonz2); } $totalPages_rsAmazonz2 = ceil($totalRows_rsAmazonz2/$maxRows_rsAmazonz2)-1; $queryString_rsAmazonz2 = ""; if (!empty($_SERVER[ QUERY_STRING ])) { $params = explode(" ", $_SERVER[ QUERY_STRING ]); $newParams = array(); foreach ($params as $param) { if (stristr($param, "pageNum_rsAmazonz2") == false stristr($param, "totalRows_rsAmazonz2") == false) { array_push($newParams, $param); } } if (count($newParams) != 0) { $queryString_rsAmazonz2 = " " . htmlentities(implode(" ", $newParams)); } } $queryString_rsAmazonz2 = sprintf(" totalRows_rsAmazonz2=%d%s", $totalRows_rsAmazonz2, $queryString_rsAmazonz2); ? html xmlns="http //www.w3.org/1999/xhtml" head meta http-equiv="Content-Type" content="text/html; charset=euc-jp" / title Amazonz -管理- /title link href="css.css" rel="stylesheet" type="text/css" / script language="JavaScript" type="text/javascript" !-- function MM_swapImgRestore() { //v3.0 var i,x,a=document.MM_sr; for(i=0;a i a.length (x=a[i]) x.oSrc;i++) x.src=x.oSrc; } function MM_preloadImages() { //v3.0 var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array(); var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i a.length; i++) if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}} } function MM_findObj(n, d) { //v4.01 var p,i,x; if(!d) d=document; if((p=n.indexOf("?")) 0 parent.frames.length) { d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);} if(!(x=d[n]) d.all) x=d.all[n]; for (i=0;!x i d.forms.length;i++) x=d.forms[i][n]; for(i=0;!x d.layers i d.layers.length;i++) x=MM_findObj(n,d.layers[i].document); if(!x d.getElementById) x=d.getElementById(n); return x; } function MM_swapImage() { //v3.0 var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i (a.length-2);i+=3) if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];} } /script /head body onload="MM_preloadImages( img/account2.jpg , img/key2.jpg , img/member2.jpg , img/kate2.jpg )" div id="body_2" div id="head" div id="head1" /div div id="head2" /div /div div id="main" div id="menu" div class="img1" img src="img/menu1.jpg" width="180" height="24" class="img1" / /div div class="img1" div class="img1" ?php echo ($_SESSION[ MM_Username ]. "さん こんにちわ!"); ? /div p a href=" ?php echo $logoutAction ? " ログアウト /a a href="top.php" 投稿閲覧 /a /p /div div class="img1" img src="img/menu1.jpg" width="180" height="24" hspace="0" vspace="0" border="0" class="img1" / /div div class="img1" a href="member_s.php" onmouseout="MM_swapImgRestore()" onmouseover="MM_swapImage( Image10 , , img/member2.jpg ,1)" img src="img/member.jpg" alt="メンバー検索" name="Image10" width="180" height="40" border="0" id="Image10" / /a /div div class="img1" a href="category_s.php" onmouseout="MM_swapImgRestore()" onmouseover="MM_swapImage( Image11 , , img/kate2.jpg ,1)" img src="img/kate.jpg" alt="カテゴリー検索" name="Image11" width="180" height="40" border="0" id="Image11" / /a /div div class="img1" a href="key_s.php" onmouseout="MM_swapImgRestore()" onmouseover="MM_swapImage( Image9 , , img/key2.jpg ,1)" img src="img/key.jpg" alt="キーワード検索" name="Image9" width="180" height="40" border="0" id="Image9" / /a /div /div div id="text" img src="img/blank.jpg" / form action=" ?php echo $editFormAction; ? " method="post" name="form2" id="form2" table width="250" height="100" align="center" tr valign="baseline" td align="left" nowrap="nowrap" class="style3" タイトル: input type="text" name="title" value="" size="32" / /td /tr tr valign="baseline" td align="left" nowrap="nowrap" class="style3" カテゴリ: select name="category" option value="BOOK" ?php if (!(strcmp("BOOK", ""))) {echo "SELECTED";} ? BOOK /option option value="DVD" ?php if (!(strcmp("DVD", ""))) {echo "SELECTED";} ? DVD /option option value="MUSIC" ?php if (!(strcmp("MUSIC", ""))) {echo "SELECTED";} ? MUSIC /option /select /td /tr tr valign="baseline" td align="left" valign="top" nowrap="nowrap" p class="style3" トピック: br / textarea name="topic" cols="40" rows="5" /textarea /p /td /tr tr valign="baseline" td align="left" nowrap="nowrap" class="style3" input type="submit" value="投稿" / /td /tr /table span class="style3" input type="hidden" name="id" value="" / input type="hidden" name="uptime" value=" ?php echo date( Y/m/d H i s ); ? " / input type="hidden" name="uset_id" value=" ?php echo($_SESSION[ MM_Username ]); ? " / input type="hidden" name="MM_insert" value="form2" / /span /form table width="400" border="0" align="center" cellpadding="3" ?php do { ? tr td class="style3" ?php echo $row_rsAmazonz2[ uptime ]; ? /td /tr tr td class="style3" ?php echo $row_rsAmazonz2[ title ]; ? /td /tr tr td class="style3" ?php echo $row_rsAmazonz2[ category ]; ? /td /tr tr td class="style3" ?php echo $row_rsAmazonz2[ topic ]; ? /td /tr tr td class="style3" ?php echo $row_rsAmazonz2[ uset_id ]; ? /td /tr tr td span class="style3" a href="update2.php?id= ?php echo $row_rsAmazonz2[ id ]; ? " 修正 /a a href="del2.php?id= ?php echo $row_rsAmazonz2[ id ]; ? " 削除 /a /span hr / /td /tr ?php } while ($row_rsAmazonz2 = mysql_fetch_assoc($rsAmazonz2)); ? /table table border="0" width="50%" align="center" tr td width="23%" align="center" ?php if ($pageNum_rsAmazonz2 0) { // Show if not first page ? a href=" ?php printf("%s?pageNum_rsAmazonz2=%d%s", $currentPage, 0, $queryString_rsAmazonz2); ? " 先頭 /a ?php } // Show if not first page ? /td td width="31%" align="center" ?php if ($pageNum_rsAmazonz2 0) { // Show if not first page ? a href=" ?php printf("%s?pageNum_rsAmazonz2=%d%s", $currentPage, max(0, $pageNum_rsAmazonz2 - 1), $queryString_rsAmazonz2); ? " 戻る /a ?php } // Show if not first page ? /td td width="23%" align="center" ?php if ($pageNum_rsAmazonz2 $totalPages_rsAmazonz2) { // Show if not last page ? a href=" ?php printf("%s?pageNum_rsAmazonz2=%d%s", $currentPage, min($totalPages_rsAmazonz2, $pageNum_rsAmazonz2 + 1), $queryString_rsAmazonz2); ? " 次へ /a ?php } // Show if not last page ? /td td width="23%" align="center" ?php if ($pageNum_rsAmazonz2 $totalPages_rsAmazonz2) { // Show if not last page ? a href=" ?php printf("%s?pageNum_rsAmazonz2=%d%s", $currentPage, $totalPages_rsAmazonz2, $queryString_rsAmazonz2); ? " 最終 /a ?php } // Show if not last page ? /td /tr /table ?php mysql_free_result($rsAmazonz2); ? /div div id="under" div id="under1" /div div id="under2" /div /div /div /div /body /html
https://w.atwiki.jp/wmpskin_sm02/pages/36.html
概略 SQLの構文と内容「from テーブル名」部分 「expand 再生リスト名または固定値」部分 「select 列名,[, 列名, ...]」部分 「order by 列名 [asc|desc] [,列名 [asc|desc] ...]」部分 「where 列名 [= 等] 値 [[and|or] 列名 [= 等]値 ...]」部分 「option [totallength | top | limit | persent | randomselectfrom | expandplaylist] [値, ...]」部分 レコードの抽出条件の注意点や制約条件式の記述順 複数条件設定について null比較 文字列WHERE句利用時の補足 日付型(lastplayeddate, adddateなど) 現在再生中のメディアの該当する属性値を利用する ランダムな値を利用する 四則演算・()・in・between・not・サブクエリ・count(*)・max()・group by等について データ比較について(where句) ソート順について(order by句) その他の制約 [部分編集] 概略 本スキンsm02ではSQL(っぽい)の構文を使ってプレイリスト作成とプレイリストの列指定ができます。 SQLについて非常に大雑把に説明すると、データベース操作を行う為のデータベース言語です。 Windows Media Playerのライブラリはデータベースみたいなものなので、SQL構文でプレイリスト作成やデータ出力機能を作ってみました。 以降、SQLと記述した場合、断り書きがない限り、本スキンの独自SQLをさします。 SQLを知らない方にとっては、やや難解な機能かもしれません。 サンプルを試してもよくわからない場合、本機能は無視してもいいと思います。 既にSQLを知っている方は容易く習得できるはずですが、本スキンには独自仕様もあります。 特にwhere句には独自仕様が多いので注意してください。 他に独自仕様としてexpand句やoption句なんてものもあります。 一応ですが、本スキンの構文解析の精度が低い上に、Windows Media Playerの制約や本スキンの仕様、不具合等により 「このSQL文は正しいはずなのにエラーになるぞ?」 「このSQL文おかしいけどエラーにならないぞ?」 「このSQL文の検索結果おかしくない?」 「エラーメッセージがわかりにくい!」 等の事は十分起こりえます。 ご了承ください。 [部分編集] SQLの構文と内容 select 列名[, 列名, ...] from テーブル名 where 列名 [= 等] 値 [[and|or] 列名 [= 等]値 ...] order by 列名 [asc|desc] [,列名 [asc|desc] ...] option タイプ [値, ...] または select 列名[, 列名, ...] expand 再生リスト名または固定値[, 再生リスト名, ...] where 列名 [= 等] 値 [[and|or] 列名 [= 等]値 ...] order by 列名 [asc|desc] [,列名 [asc|desc] ...] option タイプ [値, ...] 「from テーブル名」部分 ライブラリ登録されているファイルの取得元テーブルを指定します。 指定できるテーブルは以下の通りです audio 音楽ファイル video 動画ファイル photo 画像ファイル playlist プレイリスト(再生リストの属性) other その他(MIDI等) ※from句とexpand句は併用できません。 ※expand句と異なり、テーブルは1つのみ設定可能です。 ◇ 音楽ファイルを取得 select name from audio 「expand 再生リスト名または固定値」部分 ライブラリ登録されている再生リスト、再生中のプレイリスト、ブックマーク等を取得元に指定します。 指定できるパターンは以下の通りです。 再生リスト名 登録済の再生リスト名を で囲ってください。%を用いると再生リスト名の部分指定ができます。 all 固定値:登録済の全ての再生リスト random 固定値:登録済の再生リストからランダム current 固定値:現在再生中のプレイリスト playlistview 固定値:SQL検索画面のプレイリストビューに設定されたプレイリスト bookmark1~20 固定値:ブックマーク1~ブックマーク20に含まれるプレイリスト。参照:ブックマーク stackboard 固定値:スタックボード。参照:スタックボード画面 recentfiles_mix 固定値:最近使ったファイル[混合]。取得件数は設定値(最大表示件数)に依存。参照:曲の移動と再生履歴 recentfiles_audio 固定値:最近使った音楽ファイル。取得件数は設定値(最大表示件数)に依存。参照:曲の移動と再生履歴 recentfiles_video 固定値:最近使った動画ファイル。取得件数は設定値(最大表示件数)に依存。参照:曲の移動と再生履歴 recentfiles_other 固定値:最近使ったその他ファイル。保存中の履歴全てを取得。参照:曲の移動と再生履歴 recentfiles_mix_all 固定値:最近使ったファイル[混合]。保存中の履歴全てを取得。参照:曲の移動と再生履歴 recentfiles_audio_all 固定値:最近使った音楽ファイル。保存中の履歴全てを取得。参照:曲の移動と再生履歴 recentfiles_video_all 固定値:最近使った動画ファイル。保存中の履歴全てを取得。参照:曲の移動と再生履歴 recentfiles_other_all 固定値:最近使ったその他ファイル。保存中の履歴全てを取得。参照:曲の移動と再生履歴 frequentlyfiles_mix 固定値:最近再生頻度の高いファイル[混合]。取得件数は設定値(最大表示件数)に依存。参照:曲の移動と再生履歴 frequentlyfiles_audio 固定値:最近再生頻度が高い音楽ファイル。取得件数は設定値(最大表示件数)に依存。参照:曲の移動と再生履歴 frequentlyfiles_video 固定値:最近再生頻度が高い動画ファイル。取得件数は設定値(最大表示件数)に依存。参照:曲の移動と再生履歴 frequentlyfiles_other 固定値:最近再生頻度が高いその他ファイル。取得件数は設定値(最大表示件数)に依存。参照:曲の移動と再生履歴 frequentlyfiles_mix_all 固定値:最近再生頻度の高いファイル[混合]。保存中の履歴全てを取得。参照:曲の移動と再生履歴 frequentlyfiles_audio_all 固定値:最近再生頻度が高い音楽ファイル。保存中の履歴全てを取得。参照:曲の移動と再生履歴 frequentlyfiles_video_all 固定値:最近再生頻度が高い動画ファイル。保存中の履歴全てを取得。参照:曲の移動と再生履歴 frequentlyfiles_other_all 固定値:最近再生頻度が高いその他ファイル。保存中の履歴全てを取得。参照:曲の移動と再生履歴 ※from句とexpand句は併用できません。 ※同じファイルが複数個所に登録されている場合、マージされ1つになります。 ◇ 「BestMusic」という再生リストからデータを取得 select name expand BestMusic ◇ 「My List」という再生リストからデータを取得 select name expand My List ◇ 「GoodSong」「BetterSong」という2つの再生リストからデータを取得 select name expand GoodSong , BetterSong ◇ 「洋楽」から始まる再生リストからデータを取得 select name expand 洋楽% ◇ 「2014」を含む再生リストからデータを取得 select name expand %2014% ◇ 全ての再生リストからデータを取得 select name expand all ◇ランダムな 再生リストからデータを取得 select name expand random ◇ 再生中のプレイリストからデータを取得 select name expand current ◇ SQL検索画面のプレイリストビューに設定されたプレイリストリストからデータを取得 select name expand playlistview ◇ 1番目のブックマークに含まれるプレイリストからデータを取得 select name expand bookmark1 ◇ 15番目のブックマークに含まれるプレイリストからデータを取得 select name expand bookmark15 ◇ スタックボードからデータを取得 select name expand stackboard 「select 列名,[, 列名, ...]」部分 プレイリストビューに表示する列を指定します。 ファイル出力の場合は出力する列となります。 列名は","区切りで複数登録できます。 ◇ 全ての音楽ファイルを取得し、name, length列を表示 select name, length from audio 列名の代わりに"*"を指定できます。 "*"を指定した場合は、テーブル毎に組み込んだ列を表示します。 (※一般的なSQLでは指定テーブルの全列を表示しますが、本SQLは異なります) ◇ * を使う select * from audio また列にconvert関数が利用できます。※詳細はSQL関数を参照してください 他に、as句を使うと列に別名を設定できます。 別名内にスペース( )やカンマ(,)を使う場合は別名を で囲ってください。 ◇ name, lengthに別名を付ける select name as タイトル, length as 時間 from audio ◇ name, lengthに別名を付ける(スペースやカンマを使う) select name as なまえ,です , length as さいせい 時間 , rating as ☆はあなたの評価です from audio 「order by 列名 [asc|desc] [,列名 [asc|desc] ...]」部分 取得レコードのソート条件を指定します。 省略が可能です。 省略した場合はソートされません。 列名の後ろにascを指定すれば昇順、descを指定すれば降順にソートされます。 asc|descが未設定の場合は昇順にソートされます。 カンマ記号","で列を区切れば複数のソート条件が設定できます。 ◇ nameを昇順でソート order by name order by name asc ◇ nameを降順でソート order by name desc ◇ albumを昇順でソート、nameを降順でソート order by album asc, name desc 特殊なソートとして[order by shuffle]または[order by random]、[order by reverse]があります。 [order by shuffle]を使うとプレイリストの並び順をシャッフル(重複なし)に並べ替えます。 [order by random]を使うとプレイリストの並び順をランダム(重複の可能性があり)に並び替えます。 [order by reverse]を使うとソート結果を逆順にします。 ◇ シャッフルソート order by shuffle ◇ ランダムソート order by random ◇ 逆順に並べ替える order by reverse 「where 列名 [= 等] 値 [[and|or] 列名 [= 等]値 ...]」部分 取得レコードの絞り込み条件を指定します。 where句は省略が可能です。 省略した場合、対象テーブルの全レコードが取得されます。 「name = hoge 」や「playcount 10」のように条件を指定します。 「列名 演算子(=等) 値」の比較のみ対応しており、「値 = 列名」や 「列名1 = 列名2」のような比較はできません。 列ごとにデータ型と範囲を持っています。 データ型にはnumber(数値),string(文字列),date(日時),boolean(真偽)があります。 文字列型は「列名= 値 」のように値を で囲んでください。 日付型は「列名= 2001/10/01 」や「列名= 2001/10/01 22 00 00 」のように 値を で囲み、かつ yyyy/mm/dd または yyyy/mm/dd 24hh mm ss 形式で 記述してください。 真偽型は「列名=true」または「列名=false」のように記述してください。 データ型によって利用できる比較演算子が異なります。 数値(=, , =, . =. ) 文字列(=, ,like,notlike) 日付(=, , =, . =. ) 真偽(=, ) このほかに(is,isnot)が全てのデータ型で利用できます。 (is,isnot)は後述のnullで説明します。 ◇ nameがhoge where name= hoge ◇ playcountが10でない where playcount 10 ◇ releasedateが 2010/01/01 13 00 00 以上 where releasedate = 2010/01/01 13 00 00 ◇ releasedateが 2010/01/01 00 00 00 より大きい where releasedate 2010/01/01 ◇ nameが い から始まる。 where name like い% ◇ nameが い から始まらない where name notlike い% ◇ urlに rock が含まれている where url like %rock% 特別な比較値としてnullがあります。 この値は"データが存在しない"事を表しています。 全てのデータ型で利用できますが、指定可能な比較演算子isまたはisnotだけです。 ◇ データが未設定のreleasedateだけ取得 where releasedate is null ◇ データが設定されているartistだけ取得 where artist isnot null なお文字列の場合は「column = 」と「column is null」は同じ結果になります。 ◇ 2つは同じ結果となる。 where album is null where album = where album isnot null where album 複数の条件を設定する場合はandまたはorを使います。 論理演算子はand orの優先順位です。 3つ以上の条件を設定する場合は優先順位に気を付けてください。 本スキンでは()が未対応です。 ◇ playcountが10以上かつplaycountが20未満のレコードを検索 where playcount = 10 and playcount 20 ◇ playcountが30以上またはratingが99のレコードを取得 where playcount = 30 or rating = 99 ◇ 「playcountが30以上」または「ratingが99かつnameが あ で始まる」レコードを取得 where playcount = 30 or rating = 99 and name like あ% ◇ 「ratingが0より大きく50以下かつnameが b で始まる」または「ratingが99かつnameが a で始まる」 ◇ レコードを取得 where rating 0 and rating = 50 and name like b% or rating = 99 and name like a% 「option [totallength | top | limit | persent | randomselectfrom | expandplaylist] [値, ...]」部分 取得レコードに対するオプション操作を指定します。 option句は省略が可能です。 totallength 先頭レコードから合計再生時間[秒]指定による取得レコードの絞込み。 where句・order by句が設定している場合、その検索結果に対して絞り込みを行います。 ◇ 取得レコードの合計再生時間を1時間(3600秒)以下に絞り込みます。 option totallength 3600 option totallength toMinute(60) option totallength toHour(1) top 先頭レコードから件数指定による取得レコードの絞込み。 where句・order by句が設定している場合、その検索結果に対して絞り込みを行います。 ◇ 先頭レコードから20件取得します。 option top 20 limit 先頭レコードから位置指定[0始まり]、件数指定のによる取得レコードの絞込み。 where句・order by句が設定している場合、その検索結果に対して絞り込みを行います。 ◇ 3件目のレコードから10件取得します。 option limit 2, 10 ※3, 10ではありません! "0,1,2"で3件目のレコード persent 先頭レコードから%範囲指定による取得レコードの絞込み。 where句・order by句が設定している場合、その検索結果に対して絞り込みを行います。 ◇ 再生回数が多い曲の上位25%のレコード(正確には0%~25%のレコード)を取得します。 order by playcount desc option persent 0, 25 ◇ 評価の高い曲の上位5%~20%のレコードを取得します。 order by rating desc option persent 5, 20 randomselectfrom 列名 指定列名のランダムな値を使った取得レコードの絞込み。 where句・order by句が設定している場合、その検索結果に対して絞り込みを行います。 ※SQL関数のRandomValue()の説明も参照してください。 ◇ album列に存在するランダムな値を基に、取得レコードを絞り込む option randomselectfrom album ◇ artist列に存在するランダムな値を基に、取得レコードを絞り込む option randomselectfrom artist expandplaylist from playlistを指定したとき限定。 selectを実行すると通常はメディアファイルが取得されますが、 from playlistの場合は、プレイリストビュー上にツリー構造にメディアファイルが表示されています。 このプレイリストを通常のselectと同じようにフラットな状態に展開します +プレイリスト1 +--メディア1-1 +プレイリスト2 +--メディア2-1 +--メディア2-2 ↓ メディア1-1 メディア2-1 メディア2-2 ◇ from playlistで全ての再生リストを取得し、プレイリストビュー上にフラットに展開します。 select * from playlist option expandplaylist ◇ from playlistで全ての再生リストを取得(option expandplaylistを使わない場合) ◇ ※↑のSQLと実行結果を比較してみてください。 select * from playlist [部分編集] レコードの抽出条件の注意点や制約 条件式の記述順 [列名][比較演算子][値]の順で記述してください。 一般的なSQLでは、[値][比較演算子][列名]や[列名][比較演算子][列名]などの可能ですが、本スキンは未対応です。 ○ where name = aaa × where aaa = name × where name = album 複数条件設定について 現機能では()に未対応です。 論理演算子はand orの優先順位です。 ○ where name= aaa ○ where name= aaa and playcount 10 ○ where name= aaa or name= bbb ○ where name= aaa or name= bbb and playcount 10 × where (name= aaa or name= bbb ) and playcount 10 ◇ ()に未対応 null比較 一般的なSQLではnullでない場合、[is not]と記述しますが本SQLでは[isnot]と記述します。 ○ where name isnot null × where name is not null 文字列 文字列データの比較で を値に含めたいときは と記述してください。 ○ where name = I m a student. × where name = I m a student. 検索時に大文字・小文字の区別はしません name = you name = You name = YOU 上記の検索結果の場合、大文字・小文字関係なくyouというnameを検索します。 なお文字列のデータ比較の詳細は後述しています。 後方一致(name like %xyz )はサポートしていません。 一般的なSQLでは部分一致しない場合、[not like]と記述しますが、 本SQLでは[notlike]と記述します。 ○ name notlike あ% × name not like あ% WHERE句利用時の補足 length 秒単位 ◇ 10秒以上 length = 10 ◇ 2分以上 length = 120 length = toMinute(2) ◇ 1時間以上 length = 3600 length = toHour(1) ※to~関数についての詳細は、SQL関数を参照してください freamrate fps単位 ◇ 20fps以上 freamrate = 20 filesize バイト単位 ◇ 1KB以上 filesize = 1024 filesize = toKB(1) ◇ 1MB以上(1024*1024 = 1048576 byte) filesize = 1048576 filesize = toMB(1) ◇ 1GB以上(1024*1024*1024 = 1073741824 byte) filesize = 1073741824 filesize = toGB(1) ※to~関数についての詳細は、SQL関数を参照してください rating 特殊設定(ratingautoも()内の数値以外は同じ) ☆0 0(0) ☆1 1-12(1) ☆2 13-37(25) ☆3 38-62(50) ☆4 63-86(75) ☆5 87-99(99) ◇ ☆2つを指定(確実に取得したい場合) rating = 13 and rating = 37 ◇ ☆2つを指定(ratingの場合データ不整合なければこちらでもOK。ratingautoの場合は70などの場合もある) rating = 25 ◇ toStar関数で☆4以上を指定 rating = toStar(4) ※to~関数についての詳細は、SQL関数を参照してください 日付型(lastplayeddate, adddateなど) ◇ 日付指定 lastplayeddate = 2011/01/01 ◇ 日時指定 lastplayeddate = 2011/01/01 15 01 09 ◇ today系関数で指定 ※詳細はSQL関数を参照してください lastplayeddate = TodayFirst() 現在再生中のメディアの該当する属性値を利用する ◇ 現在再生中のメディアのアーティストの属性値を指定 artist = CurrentValue() ◇ 現在再生中のメディアの再生時間よりも長い曲を指定 length = CurrentValue() ランダムな値を利用する ◇ artistにランダムな値を設定する artist = RandomValue() [部分編集] 四則演算・()・in・between・not・サブクエリ・count(*)・max()・group by等について 未対応です。 [部分編集] データ比較について(where句) データ比較は「大文字・小文字は区別しない」「全角・半角は区別する」「ひらがな、カタカナは区別する」という仕様になっています。 order by句(後述)とデータ比較方法が異なるので注意してください。 where句は、MS提供コンポーネント(Queryオブジェクト)を使ってデータ取得を行っている為、MS仕様に準じています。 Windows8-Windows Media Player 12で確認した結果なので例えばWindows Media Player 11では異なる仕様となるかもしれません。 ◇ 上と下は同じ結果になる where name = abcd where name = ABcD ◇ 上と下は別の結果になる where name = Aあ where name = Aア [部分編集] ソート順について(order by句) 数値型データは数値として判定 真偽型データは文字として判定 日付型データは1970年からの経過時間を基に判定 文字列型データはエクスプローラに近いソート大文字・小文字を区別しない 全角・半角を区別しない ひらがな、カタカナを区別しない ハイフン(-)は無視。 文字列内の数値は数値として扱う。 SJISコードでソート。 etc. where句(前述)とデータ比較方法が異なるので注意してください。 ◇audioのname列(文字列)に下のようなレコードがある時に... AbcdE bgm10 ABCD BGM01 bgm2 あまい abefg かたち イス 王国 影(音読み:エイ、訓読み:かげ) ◇ nameを昇順ソート検索を行うと... select name from audio order by name asc ◇こんな感じにソートされます。 ABCD AbcdE abefg BGM01 bgm2 bgm10 あまい イス かたち 影(音読み:エイ、訓読み:かげ) 王国 [部分編集] その他の制約 Windows Media Player 11以降に提供されている組込み関数を内部で使用している為、Windows Media Player 11以降でなければ動作しません。※本スキンはWindows Media Player 11以降にのみ対応しています。※動作確認は主にWindows8-Windows Media Player 12で行っています。OSとWindows Media Playerとの組合せによって使用不可の列があるようです。 selectの列数が多い場合、プレイリストビューに表示しきれず、指定列の一部が表示されない可能性があります。(Windows Media Playerの仕様?)初めての検索時や全件出力等の重たい処理により数分間、Windows Media Playerが固まる事があります。歌詞・コメントなど幾つかの列はWindows Media Playerの組込み関数内でwhere句の処理ができない為、スキン側で代替処理を行っています。これら列のwhere句による条件指定は、他の列と比べて著しく処理が遅くなる場合があります。 結果タブへ検索結果を出力する場合はプレイリストビューへの出力に比べて、処理が重くなります。取得レコード件数や表示列数が多い場合は、非常に時間がかかります。特に「タブ区切り」の場合、Windows Media Playerが数分~数十分固まる程、処理時間がかかります。 expand句による再生リスト指定は非常に重くなることがあります。 実行履歴は本スキンの終了またはWindows Media Playerの終了により消去されます。 システム的な制約があるため、実行したSQLを保存する機能は作らない事にしました。SQL文を残したい場合、メモ帳などを使い手動でバックアップを取ってください。